package com.gdones.bootserver.bus.sys;

import cn.hutool.system.JavaInfo;
import cn.hutool.system.JvmInfo;
import cn.hutool.system.JvmSpecInfo;
import cn.hutool.system.SystemUtil;
import cn.hutool.system.oshi.CpuInfo;
import cn.hutool.system.oshi.OshiUtil;
import com.gdones.common.core.dto.MyResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import oshi.hardware.CentralProcessor;
import oshi.hardware.GlobalMemory;
import oshi.hardware.Sensors;

import java.util.HashMap;
import java.util.Map;

/**
 * 模块名称: 运行系统监控中心controller
 * 模块类型： 控制器
 * 编码人：高靖博
 * 创建时间：2023/4/4
 * 联系电话：18587388612
 */
@RestController
@RequestMapping("/system")
@Slf4j
@Api(tags = "运行系统监控中心接口")
public class SystemController {

    @GetMapping("/getDatas")
    @ApiOperation("获取服务器所有信息")
    public MyResult getSystemDatas(){

        MyResult result = new MyResult();

        Map<String,Object> resMap = new HashMap<>();

        // 1. java环境类-Java虚拟机器规格
        JvmSpecInfo jvmSpecInfo = SystemUtil.getJvmSpecInfo();
        resMap.put("jvmSpecInfo",jvmSpecInfo);
        // Java虚拟机实现
        JvmInfo jvmInfo = SystemUtil.getJvmInfo();
        resMap.put("jvmInfo",jvmInfo);
        // java实现
        JavaInfo javaInfo = SystemUtil.getJavaInfo();
        resMap.put("javaInfo",javaInfo);

        // 系统信息
        CpuInfo cpuInfo = OshiUtil.getCpuInfo();
        resMap.put("cpuInfo",cpuInfo);

        GlobalMemory memory = OshiUtil.getMemory();
        resMap.put("memory",memory);

        CentralProcessor processor = OshiUtil.getProcessor();
        resMap.put("processor",processor);

        Sensors sensors = OshiUtil.getSensors();
        resMap.put("sensors",sensors);

        result.setMsg("查询成功！");
        result.setData(resMap);
        return result;
    }


}
